home *** CD-ROM | disk | FTP | other *** search
- /*
- * Projekt zum formatierten Drucken
- * unter Ausnutzung der Preferences-Struktur
- * und wahlweisen InLine-Optionen
- */
-
-
- /************************************
- * *
- * PreProc-Anweisungen *
- * =================== *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 23.7.91 *
- * H.Kindler 26.8.93 Neue Protos *
- * *
- ************************************/
- #include <ctype.h> /* islower etc. */
- #include <stdlib.h> /* exit etc. */
- #include <stdio.h> /* printf etc. */
- #include <string.h> /* strlen etc. */
- #include <exec/types.h> /* ULONG etc. */
- #include <exec/memory.h> /* AvailMem etc. */
- #include <clib/exec_protos.h>
- #include <intuition/intuition.h> /* GetPrefs etc. */
- #include <clib/intuition_protos.h>
- #include <clib/graphics_protos.h>
- #include <sys/stat.h> /* stat etc. */
- #include <sys/time.h> /* localtime etc.*/
- #include <libraries/arpbase.h> /* FileRequester */
-
- /* Defines */
-
- #define Version 0 /* Noch keine Version */
- #define Revision 1 /* erste Revision */
- #define DatumMax 25L /* Max. Stringlänge Datum */
- #define DIR_LEN 256 /* Max. Länge Directory */
- #define EINRUECK (long) (HLUECKE / 2) /* Horizontal-Abstand der Boxen */
- #define ESC 27 /* Esacpe-Zeichen */
- #define FNAME_LEN 30 /* Max. Länge FileName */
- #define HLUECKE 20L /* Horizontal-Abstand der Boxen */
- #define LINKS 0L /* Linker Rand Boxen im Window */
- #define NUMLEN 6L /* Länge Zeilennummer (falls da) */
- #define OBEN 0L /* oberer Rand Dingsbums */
- #define PRINT 9L /* Lg 1.Teil PrtFile (prt:Print) */
- #define RECHTS 72L /* rechter Rand kleines Gadget */
- #define RECHTS2 (long) (3 * RECHTS + 2 * HLUECKE) /* GAANZ BREEIIT */
- #define RECHTS3 (long) ((3 * RECHTS + HLUECKE) / 2) /* Halb so breit */
- #define RETURN 13 /* edoC-NRUTER */
- #define SIZE sizeof (struct Preferences) /* eine kleine Abkürzung */
- #define SKIP 3L /* Zeilen am Seitenende */
- #define SPACE 32L /* Die große Taste ganz Unten! */
- #define TAB 8L /* Tabulatorgröße */
- #define TITELSKIP 14L /* Abstand 1. Box - Fensterrand */
- #define TXTVOFFSET 3L /* V-Abstand Box - Text */
- #define UNTEN 13L /* unterer Rand */
- #define VLUECKE 5L /* Vertikal-Abstand */
-
- /* Prototypen */
-
- void Close_All (void); /* Prototypen */
- void InitPrinter (void); /* der */
- void DefaultPrefs (struct Gadget dingens[]); /* einzelnen */
- void Open_All (void); /* Funktionen */
- void PrintEscape (void);
- short PrintKopf (void);
- short PrintLine (short lines, short pline);
- void ResetPrinter (void);
- void drucken (void);
- void Abbruch (void);
-
- /* Globals */
-
- struct ArpBase *ArpBase; /* Basis ARP (FileRequester) */
- short CPL; /* Chars Per Line */
- char Datum [DatumMax]; /* Datum-String */
- size_t DatumLen; /* Länge des Datum-Strings */
- BOOL DoNum = FALSE; /* (Keine) Zeilennummer */
- BOOL DoNumPrefs = FALSE; /* (Keine) Zeilennummer */
- BOOL DoKopf = TRUE; /* KopfZeile */
- char *FileName; /* Name, wie übergeben */
- FILE *FP = NULL; /* FilePointer Eingabe-File */
- UBYTE fr_fname [FNAME_LEN + 1]; /* Puffer Requester */
- UBYTE fr_dir [DIR_LEN + 1]; /* UndoPufer Requester */
- extern
- struct GfxBase *GfxBase; /* Gfx öffnen DICE-Special */
- extern
- struct InuitionBase *IntuitionBase; /* Intui öffnen DICE-Spezial */
- short LM; /* Left Margin */
- short LPP; /* Lines Per Page */
- short LPI; /* Lines Per Inch */
- short LLen; /* LineLength (ohne Ränder) */
- BOOL NoNum = FALSE; /* ZN temporär unterdrücken */
- short NumLen = 0; /* Länge der ZeilenNummer */
- short PPL; /* PaPerLength */
- FILE *PRT = NULL; /* FilePointer Drucker */
- struct Preferences *PrefsBuffer; /* Prefs-Struktur */
- struct Preferences *PrefsOrig; /* Prefs-Struktur Orig-Werte */
- short RM; /* Right Margin */
- short Skip; /* freie Zeilen am Blattende */
- /*extern
- UWORD Unterschrift_data[];*/ /* Image-Daten erklären */
- struct Window *window; /* Unser kleines Fensterlein */
-
- /*** IMAGE ***/
-
- __chip const
- UWORD Unterschrift_data[3 * 113 * 2] =
- {
- 0, 192, 0, 0, 304, 0, 0, 1600, 0, 0, 3456,
- 0, 0, 6912, 0, 0, 7680, 0, 0, 13824, 0, 0,
- 15360, 0, 0, 15360, 0, 0, 15360, 0, 0, 11264, 0,
- 0, 10240, 0, 0, 10240, 0, 0, 14336, 0, 0, 15360,
- 0, 0, 15360, 0, 0, 15360, 0, 0, 7168, 0, 0,
- 7168, 0, 3840, 7680, 0, 4032, 7680, 0, 2016, 3584, 0,
- 1840, 3840, 0, 924, 3840, 0, 462, 1792, 0, 231, 1920,
- 0, 113, 34688, 0, 25, 50048, 0, 3854, 26240, 0, 1991,
- 63360, 0, 481, 64896, 0, 248, 16128, 0, 124, 3584, 0,
- 30, 1792, 0, 15, 33664, 0, 3, 50048, 0, 0, 58304,
- 0, 0, 16320, 0, 0, 8128, 0, 0, 1536, 0, 0,
- 4864, 0, 0, 9600, 0, 0, 14528, 0, 0, 7280, 0,
- 0, 3640, 0, 0, 924, 0, 0, 244, 0, 0, 60,
- 0, 0, 0, 0, 1, 32800, 0, 1, 24680, 0, 1,
- 49272, 0, 0, 57400, 0, 0, 12392, 0, 0, 120, 0,
- 0, 216, 0, 3, 240, 0, 1, 49584, 0, 0, 58208,
- 0, 0, 29632, 0, 0, 14528, 0, 7168, 3072, 0, 1920,
- 1536, 0, 496, 1792, 0, 60, 896, 0, 7, 33216, 0,
- 0, 61920, 0, 0, 8032, 0, 0, 448, 0, 0, 0,
- 0, 0, 0, 0, 57344, 0, 0, 31744, 0, 0, 7936,
- 0, 0, 1984, 1024, 0, 496, 3328, 0, 124, 6912, 0,
- 15, 7680, 0, 3, 56832, 0, 0, 32256, 0, 0, 7936,
- 0, 0, 4032, 0, 0, 752, 0, 0, 16, 0, 0,
- 128, 0, 0, 96, 0, 0, 48, 0, 0, 60, 0,
- 0, 46, 0, 0, 40, 0, 7936, 56, 0, 4064, 60,
- 0, 1852, 60, 0, 487, 252, 0, 57, 49404, 0, 15,
- 28796, 0, 3, 63544, 0, 0, 32284, 0, 0, 4086, 0,
- 0, 252, 0, 0, 6256, 0, 0, 13848, 0, 7996, 7566,
- 0, 2047, 34407, 0, 127, 61851, 32768, 15, 57086, 32768, 0,
- 32767, 32768, 0, 8191, 32768, 0, 991, 49152, 0, 120, 0,
- 0, 30, 0, 0, 7, 32768, 0, 0, 49152, 0, 0,
- 0, 0, 48, 0, 0, 64, 0, 0, 384, 0, 0,
- 768, 0, 0, 1536, 0, 0, 1536, 0, 0, 3072, 0,
- 0, 3072, 0, 0, 3072, 0, 0, 3072, 0, 0, 2048,
- 0, 0, 2048, 0, 0, 2048, 0, 0, 3072, 0, 0,
- 3072, 0, 0, 3072, 0, 0, 3072, 0, 0, 1024, 0,
- 0, 1536, 0, 576, 1536, 0, 800, 512, 0, 256, 768,
- 0, 132, 768, 0, 66, 256, 0, 33, 384, 0, 16,
- 33152, 0, 0, 16768, 0, 0, 8320, 0, 64, 4480, 0,
- 1, 384, 0, 8, 14080, 0, 4, 512, 0, 0, 256,
- 0, 0, 33152, 0, 0, 16512, 0, 0, 192, 0, 0,
- 192, 0, 0, 1984, 0, 0, 512, 0, 0, 256, 0,
- 0, 1152, 0, 0, 2048, 0, 0, 1040, 0, 0, 8,
- 0, 0, 12, 0, 0, 4, 0, 0, 60, 0, 0,
- 0, 0, 0, 0, 0, 0, 24584, 0, 0, 16408, 0,
- 0, 8216, 0, 0, 12296, 0, 0, 24, 0, 0, 24,
- 0, 0, 48, 0, 0, 16432, 0, 0, 8288, 0, 0,
- 4288, 0, 0, 2240, 0, 0, 1024, 0, 0, 512, 0,
- 256, 256, 0, 32, 128, 0, 4, 64, 0, 0, 32864,
- 0, 0, 6240, 0, 0, 448, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 256, 0, 64, 768, 0, 0, 1536,
- 0, 2, 1536, 0, 0, 512, 0, 0, 0, 0, 0,
- 1024, 0, 0, 688, 0, 0, 16, 0, 0, 0, 0,
- 0, 32, 0, 0, 0, 0, 0, 4, 0, 0, 14,
- 0, 0, 8, 0, 0, 8, 0, 768, 12, 0, 32,
- 12, 0, 256, 12, 0, 0, 12, 0, 0, 4124, 0,
- 2, 8, 0, 0, 16388, 0, 0, 3078, 0, 0, 60,
- 0, 0, 16, 0, 0, 0, 0, 0, 1026, 0, 1536,
- 1, 0, 64, 32769, 32768, 14, 0, 32768, 0, 1057, 32768,
- 0, 4224, 32768, 0, 543, 49152, 0, 0, 0, 0, 0,
- 0, 0, 4, 32768, 0, 0, 49152
- };
-
- struct Image Unterschrift =
- {
- 0, 0, /* LeftEdge, TopEdge */
- 34, 113, 2, /* Width, Height, Depth */
- &Unterschrift_data[0], /* ImageData */
- 3, 0, /* PlanePick, PlaneOnOff */
- NULL /* NextImage */
- };
-
- /*** Intui-Texte ***/
-
- struct TextAttr txtattr = /* Name, Größe, Style, Flags */
- {"topaz.font", 8, FS_NORMAL, FPF_ROMFONT | FPF_DESIGNED};
-
- struct IntuiText texte[] =
- { /* FrontPen, BackPen, Mode, Links, Oben, TextAttr, Text, Next */
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 4, TXTVOFFSET, /* 0 = Pica */
- &txtattr, "Pica", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 5, TXTVOFFSET, /* 1 = Elite */
- &txtattr, "Elite", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 4, TXTVOFFSET, /* 2 = Fine */
- &txtattr, "Fine", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 3, TXTVOFFSET, /* 3 = NLQ */
- &txtattr, "NLQ", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 5, TXTVOFFSET, /* 4 = Draft */
- &txtattr, "Draft", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 1, TXTVOFFSET, /* 5 = 6 LPI */
- &txtattr, "6", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 1, TXTVOFFSET, /* 6 = 8 LPI */
- &txtattr, "8", NULL},
- {1, 0, JAM1, RECHTS3 / 2 + 1 - 4 * 13, TXTVOFFSET, /* 7 = Zeilennummern */
- &txtattr, "Zeilennummern", NULL},
- {1, 0, JAM1, RECHTS3 / 2 + 1 - 4 * 9, TXTVOFFSET, /* 8 = Kopfzeile */
- &txtattr, "Kopfzeile", NULL},
- {1, 0, JAM1, RECHTS / 2 + 1 - 4 * 5, TXTVOFFSET, /* 9 = Laden */
- &txtattr, "Laden", NULL},
- {1, 0, JAM1, RECHTS2 / 2 + 1 - 4 * 16, TXTVOFFSET, /* 10 = Voreinstellun */
- &txtattr, "Voreinstellungen", NULL},
- {1, 0, JAM1, RECHTS3 / 2 + 1 - 4 * 7, TXTVOFFSET, /* 11 = Drucken */
- &txtattr, "Drucken", NULL},
- {1, 0, JAM1, RECHTS3 / 2 + 1 - 4 * 7, TXTVOFFSET, /* 12 = Abbruch */
- &txtattr, "Abbruch", NULL}
- };
-
- struct IntuiText texte2 [] =
- { /* FrontPen, BackPen, Mode, Links, Oben, TextAttr, Text, Next */
- {1, 0, JAM1, EINRUECK, TITELSKIP + TXTVOFFSET + UNTEN + VLUECKE,
- &txtattr, "Qualität:", &texte2[1]},
- {1, 0, JAM1, EINRUECK, TITELSKIP + TXTVOFFSET + 2 * (UNTEN + VLUECKE),
- &txtattr, "Ränder:", &texte2[2]},
- {1, 0, JAM1, EINRUECK, TITELSKIP + TXTVOFFSET + 3 * (UNTEN + VLUECKE),
- &txtattr, "LPI:", &texte2[3]},
- {1, 0, JAM1, EINRUECK, TITELSKIP + TXTVOFFSET + 4 * (UNTEN + VLUECKE),
- &txtattr, "Zeilen/Blatt (6 LPI):", &texte2[4]},
- {1, 0, JAM1, EINRUECK, TITELSKIP + TXTVOFFSET + 5 * (UNTEN + VLUECKE),
- &txtattr, "Zeilen überspringen:", &texte2[5]},
- {1, 0, JAM1, EINRUECK, TITELSKIP + 2 *TXTVOFFSET + 7 * (UNTEN + VLUECKE),
- &txtattr, "Dateiname:", NULL}
- };
-
- /*** Ränder ***/
-
- SHORT randdaten [] [] =
- { /* x1,y1, x2,y2, ... */
- {LINKS - 1, OBEN - 1, RECHTS, OBEN - 1, RECHTS, UNTEN,
- LINKS - 1, UNTEN, LINKS - 1, OBEN - 1},
- {LINKS - 1, OBEN - 1, RECHTS2, OBEN - 1, RECHTS2, UNTEN,
- LINKS - 1, UNTEN, LINKS - 1, OBEN - 1},
- {LINKS - 1, OBEN - 1, RECHTS3, OBEN - 1, RECHTS3, UNTEN,
- LINKS - 1, UNTEN, LINKS - 1, OBEN - 1},
- {LINKS + 2, OBEN + 1, RECHTS3 - 3, OBEN + 1, RECHTS3 - 3, UNTEN - 2,
- LINKS + 2, UNTEN - 2, LINKS + 2, OBEN + 1}
- };
-
- struct Border rand [] =
- { /* Links, Oben, FrontPen, BackPen, Mode, Count, XY, Next */
- {LINKS, OBEN, 1, 0, JAM1, 5, randdaten[0], NULL },
- {LINKS, OBEN - TXTVOFFSET, 1, 0, JAM1, 5, randdaten[0], NULL },
- {LINKS, OBEN, 1, 0, JAM1, 5, randdaten[1], NULL },
- {LINKS, OBEN, 1, 0, JAM1, 5, randdaten[2], NULL },
- {LINKS, OBEN - TXTVOFFSET, 1, 0, JAM1, 5, randdaten[1], NULL },
- {LINKS, OBEN, 1, 0, JAM1, 5, randdaten[3], &rand[3]}
- };
-
- /*** Sting-Gadgets-Stuff ***/
-
- UBYTE strbuf [4] [4]; /* Puffer StrGads */
- UBYTE strundobuf [4] [4]; /* UndoPuf StrGads */
- UBYTE fname [DIR_LEN + FNAME_LEN + 1]; /* Puffer FileName */
- UBYTE fnameundo [DIR_LEN + FNAME_LEN + 1]; /* UndoPuf FileName */
-
- struct StringInfo strinfo [] =
- { /* Buffer, UndoBuffer, BufferPos, MaxChars, DispPos, UndoPos, *
- * NumChars, DispCount, CLeft, CTop, LayerPtr, LongInt, AltKeyMap */
- {strbuf[0], strundobuf[0], 0, 4, 0, 0, 0, 0, 0, 0, NULL, 0, NULL},
- {strbuf[1], strundobuf[1], 0, 4, 0, 0, 0, 0, 0, 0, NULL, 0, NULL},
- {strbuf[2], strundobuf[2], 0, 4, 0, 0, 0, 0, 0, 0, NULL, 0, NULL},
- {strbuf[3], strundobuf[3], 0, 4, 0, 0, 0, 0, 0, 0, NULL, 0, NULL},
- {fname, fnameundo, 0, DIR_LEN + FNAME_LEN, 0, 0, 0, 0, 0, 0, NULL, 0, NULL}
- };
-
- /*** Gadgets ***/
-
- struct Gadget dingens[] =
- { /* Next, Links, Oben, Breite, Höhe, Flags, Activation, Typ, *
- * Rand, SelRand, Text, MutualExclude, SpecialInfo, ID, User */
- { /* Pica */
- &dingens[1], /* Next */
- EINRUECK, TITELSKIP, /* Left, Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[0], NULL, /* GadgetText, MutualExclude */
- NULL, 0, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Elite */
- &dingens[2], /* Next */
- EINRUECK + HLUECKE + RECHTS, /* Left */
- TITELSKIP, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[1], NULL, /* GadgetText, MutualExclude */
- NULL, 1, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Fine */
- &dingens[3], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[2], NULL, /* GadgetText, MutualExclude */
- NULL, 2, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* NLQ */
- &dingens[4], /* Next */
- EINRUECK + 1 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + UNTEN + VLUECKE, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[3], NULL, /* GadgetText, MutualExclude */
- NULL, 3, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Draft */
- &dingens[5], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + UNTEN + VLUECKE, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[4], NULL, /* GadgetText, MutualExclude */
- NULL, 4, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* 6 LPI */
- &dingens[6], /* Next */
- EINRUECK + 1 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 3 * (UNTEN + VLUECKE), /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[5], NULL, /* GadgetText, MutualExclude */
- NULL, 5, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* 8 LPI */
- &dingens[7], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 3 * (UNTEN + VLUECKE), /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[6], NULL, /* GadgetText, MutualExclude */
- NULL, 6, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Linker Rand */
- &dingens[8], /* Next */
- EINRUECK + 1 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 2 * (UNTEN + VLUECKE) + TXTVOFFSET, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | STRINGRIGHT | LONGINT, /* Activation */
- STRGADGET, /* GadgetType */
- &rand[1], NULL, /* GadgetRender, SelectRender */
- NULL, NULL, /* GadgetText, MutualExclude */
- &strinfo[0], 7, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Rechter Rand */
- &dingens[9], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 2 * (UNTEN + VLUECKE) + TXTVOFFSET, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | STRINGRIGHT | LONGINT, /* Activation */
- STRGADGET, /* GadgetType */
- &rand[1], NULL, /* GadgetRender, SelectRender */
- NULL, NULL, /* GadgetText, MutualExclude */
- &strinfo[1], 8, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Blattlänge */
- &dingens[10], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 4 * (UNTEN + VLUECKE) + TXTVOFFSET, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | STRINGRIGHT | LONGINT, /* Activation */
- STRGADGET, /* GadgetType */
- &rand[1], NULL, /* GadgetRender, SelectRender */
- NULL, NULL, /* GadgetText, MutualExclude */
- &strinfo[2], 9, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Freie Zeilen */
- &dingens[11], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 5 * (UNTEN + VLUECKE) + TXTVOFFSET, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | STRINGRIGHT | LONGINT, /* Activation */
- STRGADGET, /* GadgetType */
- &rand[1], NULL, /* GadgetRender, SelectRender */
- NULL, NULL, /* GadgetText, MutualExclude */
- &strinfo[3], 10, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Zeilennummer */
- &dingens[12], /* Next */
- EINRUECK, /* Left */
- TITELSKIP + 6 * (UNTEN + VLUECKE), /* Top */
- RECHTS3, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | TOGGLESELECT, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[3], NULL, /* GadgetRender, SelectRender */
- &texte[7], NULL, /* GadgetText, MutualExclude */
- NULL, 11, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Kopfzeile */
- &dingens[13], /* Next */
- EINRUECK + HLUECKE + RECHTS3, /* Left */
- TITELSKIP + 6 * (UNTEN + VLUECKE), /* Top */
- RECHTS3, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY | TOGGLESELECT, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[3], NULL, /* GadgetRender, SelectRender */
- &texte[8], NULL, /* GadgetText, MutualExclude */
- NULL, 12, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Laden */
- &dingens[14], /* Next */
- EINRUECK + 2 * (HLUECKE + RECHTS), /* Left */
- TITELSKIP + 7 * (UNTEN + VLUECKE) + TXTVOFFSET, /* Top */
- RECHTS, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[0], NULL, /* GadgetRender, SelectRender */
- &texte[9], NULL, /* GadgetText, MutualExclude */
- NULL, 13, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Dateiname */
- &dingens[15], /* Next */
- EINRUECK, /* Left */
- TITELSKIP + 8 * (UNTEN + VLUECKE) + TXTVOFFSET + 1, /* Top */
- RECHTS2, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- STRGADGET, /* GadgetType */
- &rand[4], NULL, /* GadgetRender, SelectRender */
- NULL, NULL, /* GadgetText, MutualExclude */
- &strinfo[4], 14, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Voreinstellungen */
- &dingens[16], /* Next */
- EINRUECK, /* Left */
- TITELSKIP + 9 * (UNTEN + VLUECKE) + TXTVOFFSET + 1, /* Top */
- RECHTS2, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[2], NULL, /* GadgetRender, SelectRender */
- &texte[10], NULL, /* GadgetText, MutualExclude */
- NULL, 15, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Drucken */
- &dingens[17], /* Next */
- EINRUECK, /* Left */
- TITELSKIP + 10 * (UNTEN + VLUECKE) + 2 * TXTVOFFSET + 1, /* Top */
- RECHTS3, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[5], NULL, /* GadgetRender, SelectRender */
- &texte[11], NULL, /* GadgetText, MutualExclude */
- NULL, 16, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- },
- { /* Abbruch */
- NULL, /* Next */
- EINRUECK + HLUECKE + RECHTS3, /* Left */
- TITELSKIP + 10 * (UNTEN + VLUECKE) + 2 * TXTVOFFSET + 1, /* Top */
- RECHTS3, UNTEN, /* Width, Height */
- GADGHCOMP, /* Flags */
- RELVERIFY, /* Activation */
- BOOLGADGET, /* GadgetType */
- &rand[5], NULL, /* GadgetRender, SelectRender */
- &texte[12], NULL, /* GadgetText, MutualExclude */
- NULL, 17, /* SpecialInfo, GadgetID */
- NULL /* UserData */
- }
- };
-
- /*** FileRequester ***/
-
- struct FileRequester freq;
- /*
- * struct FileRequester freq =
- * {
- * "Bitte Datei auswählen! ",
- * fr_fname, fr_dir,
- * window,
- * 0, FR2F_LongPath,
- * NULL,
- * 0L
- * };
- */
-
- /*******************************************
- * *
- * Programm: Formatiertes Drucken von Files *
- * ======================================== *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 23.7.91 CLI-Start *
- * *
- *******************************************/
- void main (int argc, char **argv)
- {
- short i; /* Zählvariable */
-
- /*
- * printf ("argc: %d\n",argc);
- * for (i = 0; i < argc; ++i)
- * printf ("argv[%d]: %s\n", i, argv[i]);
- */
- if ((argc == 2) && (*argv[1] == '?')) /* Eine kleine Hilfe */
- {
- printf ("\33[33mAufruf:\33[31m\t\%s PrintFile [NUM]\n\n", argv[0]);
- puts ("Print druckt PrintFile (Wahlweise mit Zeilen-Nummerierung.)");
- puts ("Es werden zur Seitenformatierung automatisch die Werte");
- puts ("von Preferences benutzt.");
- puts ("\nMomentan kann statt NUM als dritter Wert etwas beliebiges");
- puts ("übergeben werden (\"Stinker\" tuts auch)!");
- exit (RETURN_OK);
- }
- if (argc == 3) /* Momentan tut alles! */
- DoNumPrefs = TRUE; /* Nummerierung einschalten */
- FileName = argv[1];
- drucken ();
- }
-
-
- /*******************************************
- * *
- * Programm: Formatiertes Drucken von Files *
- * ======================================== *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 23.7.91 WB-Start *
- * *
- *******************************************/
- void wbmain (struct WBStartup *wbs)
- {
- drucken ();
- }
-
- /************************************************************
- * *
- * Programm: Formatiertes Drucken von Files *
- * ======================================== *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 10.8.91 *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- void drucken (void)
- {
- short c; /* var für fgetc */
- short i; /* Zählvariable */
- short anz = 0; /* Zeichenzahl aktuelle Zeile */
- short lines = 1; /* Zeilenzahl */
- short pline = 0; /* Zeilen aktuelle Seite */
- struct stat statbuf; /* Infos übers File */
- time_t ftime; /* Datum des Files */
- struct tm *tp; /* Time-Struct von ftime */
-
- Open_All ();
- InitPrinter();
- if (stat (FileName, &statbuf)) /* Infos übers File */
- {
- puts ("Error bei 'stat'");
- Close_All ();
- exit (RETURN_ERROR);
- }
- ftime = (time_t) statbuf.st_ctime; /* Datum des Files */
- tp = localtime (&ftime); /* Aufbereiten */
- DatumLen = strftime (Datum, DatumMax, "%a %d.%b %Y %H:%M:%S", tp);
- if ((FP = fopen (FileName, "r")) == NULL)
- {
- printf ("Kann %s nicht öffnen!", FileName);
- Close_All ();
- exit (RETURN_ERROR);
- }
- pline = LPP; /* Trick: Kopf 1.Seite und Anfang */
- pline = PrintLine(lines, pline); /* 1. Zeile werden korrekt gedruckt */
- while ((c = fgetc (FP)) != EOF)
- {
- switch (c)
- {
- case '\n': /* NewLine */
- lines++; /* neue Zeilennummer */
- pline = PrintLine (lines, pline); /* neue Zeile */
- anz = 0; /* ZeichenZähler = 0 */
- break;
- case '\f': /* FormFeed */
- pline = PrintKopf (); /* neue Seite */
- anz = 0; /* ZeichenZähler = 0 */
- break;
- case '\t': /* Tabulator */
- for (i = 0; i <= anz % TAB; i++) /* Zeichen zum TAB */
- if (fputc (' ', PRT) == EOF) /* mit ' ' füllen */
- Abbruch();
- anz += anz % TAB; /* Zähler stellen */
- break;
- case '\33': /* wird eigentlich nur ge- */
- if (fputc (c, PRT) == EOF) /* braucht um anz bei ESC- */
- Abbruch(); /* Sequenzen nicht hochzu- */
- PrintEscape (); /* zuzählen (die Zeilen */
- break; /* würden sonst zu kurz!) */
- default:
- if (anz++ == CPL) /* Falls Zeilenende */
- {
- NoNum = TRUE; /* Zeilennummer aus */
- pline = PrintLine (lines, pline); /* neue Zeile */
- NoNum = FALSE; /* Zeilennummer ein */
- anz = 0; /* ZeichenZähler =0 */
- }
- if (fputc (c, PRT)) /* einfach nur drucken */
- Abbruch();
- }
- }
- ResetPrinter ();
- Close_All ();
- exit (RETURN_OK);
- }
-
-
- /***********************************************
- * *
- * Funktion: Alles Öffnen & Speicher *
- * ================================= *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 23.7.91 Nur Puffer für Perferences *
- * *
- * *
- ***********************************************/
- void Open_All (void)
- {
- PrefsBuffer = (struct Preferences *) AllocMem ((ULONG) SIZE, MEMF_CLEAR); /* Das gibt eine schöne, lange Zeile !!!!!! */
- if (!PrefsBuffer)
- {
- puts ("Kein Speicher frei!");
- Close_All ();
- exit (RETURN_ERROR);
- }
- PrefsOrig = (struct Preferences *) AllocMem ((ULONG) SIZE, MEMF_CLEAR); /* Das gibt eine schöne, lange Zeile !!!!!! */
- if (!PrefsOrig)
- {
- puts ("Kein Speicher frei!");
- Close_All ();
- exit (RETURN_ERROR);
- }
- ArpBase = (struct ArpBase *) OpenLibrary ("arp.library", 39L);
- }
-
-
- /***********************************************
- * *
- * Funktion: Alles wieder schließen *
- * ================================ *
- * *
- * Autor: Datum: Kommertar: *
- * ------ ------ ---------- *
- * H.Kindler 23.7.91 Preferences, File, Drucker *
- * *
- ***********************************************/
- void Close_All (void)
- {
- if (ArpBase) CloseLibrary ((struct Library *) ArpBase);
- if (PrefsBuffer) FreeMem ((ULONG *) PrefsBuffer, (ULONG) SIZE);
- if (PrefsOrig) FreeMem ((ULONG *) PrefsOrig, (ULONG) SIZE);
- if (FP) fclose (FP);
- if (PRT) fclose (PRT);
- }
-
-
- /************************************************************
- * *
- * Funktion: Kopf drucken *
- * ===================== *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 24.7.91 *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- short PrintKopf ()
- {
- static short len; /* Länge der Teile der Kopfzeile */
- static short fill; /* das fehlt noch zur vollen Zeile */
- static short filla; /* zwischen Datum und FileName */
- static short fillb; /* zwischen FileName und Seiten */
- static short page = 0; /* Seitenzahl */
- short i; /* Zähler */
- short anz; /* Gedruckte Zeilenzahl */
-
- if (page) /* Falls ! 1.Seite */
- {
- if (fputc ('\n\f', PRT) == EOF) /* FormFeed */
- Abbruch();
- }
- else /* sonst */
- { /* SPACE berechnen */
- len = DatumLen + strlen (FileName) + 10; /* Chars für Kopf */
- fill = LLen - len; /* restliche Char */
- filla = fill / 2; /* die Hälfte */
- fillb = fill - filla; /* und der Rest */
- }
- page++; /* eine Seite mehr */
- if (DoKopf)
- {
- if (fprintf (PRT, "%s", Datum) < 0) /* Datum */
- Abbruch();
- for ( i = 1; i <= filla; i++) /* Zwischenraum */
- if (fputc (' ', PRT) == EOF)
- Abbruch();
- if (fprintf (PRT, "%s", FileName) < 0) /* FileName */
- Abbruch();
- for ( i = 1; i <= fillb; i++) /* Zwischenraum */
- if (fputc (' ', PRT) ==EOF)
- Abbruch();
- if (fprintf (PRT, "Page: %4d\n\n\n", page) < 0) /* Seitennummer */
- Abbruch();
- anz = 3; /* so viele Zeilen */
- }
- else
- anz = 0;
- return (anz);
- }
-
-
- /************************************************************
- * *
- * Funktion: Zeilenvorschub drucken *
- * ================================ *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 24.7.91 am Blattende: Kopf *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- short PrintLine (short lines, /* Anzahl der '\n' im File */
- short pline) /* Auf dieser Seite gedruckte '\n' */
- {
- if (pline++ < LPP) /* Falls Seite nicht voll */
- if (fputc ('\n', PRT) == EOF) /* neue Zeile */
- Abbruch();
- else /* sonst */
- pline = PrintKopf (); /* neue Seite */
- if (DoNum) /* Falls Zeilennummern */
- if (NoNum) /* Falls unterdrücken */
- if (fputs (" ", PRT) == EOF) /* Space drucken */
- Abbruch();
- else /* sonst */
- if (fprintf (PRT, "%04d: ", lines) < 0) /* Zeilennummer */
- Abbruch(); /* drucken */
- return (pline); /* so viele Zeilen */
- }
-
-
- /************************************************************
- * *
- * Funktion: ESC-Sequence drucken *
- * ============================== *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 26.7.91 *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- void PrintEscape (void)
- {
- short c;
-
- c = fgetc (FP); /* Ein Zeichen folgt immer */
- if (fputc (c, PRT) == EOF)
- Abbruch();
- switch (c)
- {
- case '#': /* hier folgt jeweils noch */
- case '(': /* ein Zeichen */
- c = fgetc (FP);
- if (fputc (c, PRT) == EOF)
- Abbruch();
- break;
- case '[': /* begrenzt durch E,F,g,m,p,q,r,s,v,w,x,z */
- while (!((islower (c = fgetc (FP)) || (c == 'E') || (c == 'F'))))
- {
- if (fputc (c, PRT) == EOF)
- Abbruch();
- }
- if (fputc (c, PRT) == EOF)
- Abbruch();
- }
- return ();
- }
-
-
- /********************************
- * *
- * Funktion: Neue Prefs holen *
- * ========================== *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 31.7.91 *
- * *
- ********************************/
- void DefaultPrefs (struct Gadget dingens[])
- {
- GetPrefs (PrefsBuffer, (short) SIZE);
- switch (PrefsBuffer->PrintPitch) /* Zeilenlänge festlegen */
- {
- case PICA:
- LLen = 80;
- dingens[0].Flags |= SELECTED;
- dingens[1].Flags &= ~SELECTED;
- dingens[2].Flags &= ~SELECTED;
- break;
- case ELITE:
- LLen = 96;
- dingens[0].Flags &= ~SELECTED;
- dingens[1].Flags |= SELECTED;
- dingens[2].Flags &= ~SELECTED;
- break;
- case FINE:
- LLen = 136;
- dingens[0].Flags &= ~SELECTED;
- dingens[1].Flags &= ~SELECTED;
- dingens[2].Flags |= SELECTED;
- break;
- }
- switch (PrefsBuffer->PrintQuality) /* Druck-Qualität */
- {
- case LETTER:
- dingens[3].Flags |= SELECTED;
- dingens[4].Flags &= ~SELECTED;
- break;
- case DRAFT:
- dingens[3].Flags &= ~SELECTED;
- dingens[4].Flags |= SELECTED;
- break;
- }
- switch (PrefsBuffer->PrintSpacing) /* Zeilen pro Zoll */
- {
- case SIX_LPI:
- LPI = 6;
- dingens[5].Flags |= SELECTED;
- dingens[6].Flags &= ~SELECTED;
- break;
- case EIGHT_LPI:
- LPI = 8;
- dingens[5].Flags &= ~SELECTED;
- dingens[6].Flags |= SELECTED;
- break;
- }
- LM = PrefsBuffer->PrintLeftMargin;
- ((struct StringInfo *) (dingens[7].SpecialInfo))->LongInt = LM;
- sprintf (((struct StringInfo *) (dingens[7].SpecialInfo))->Buffer, "%d", LM);
- RM = PrefsBuffer->PrintRightMargin;
- ((struct StringInfo *) (dingens[8].SpecialInfo))->LongInt = RM;
- sprintf (((struct StringInfo *) (dingens[8].SpecialInfo))->Buffer, "%d", RM);
- PPL = PrefsBuffer->PaperLength;
- ((struct StringInfo *) (dingens[9].SpecialInfo))->LongInt = PPL;
- sprintf (((struct StringInfo *) (dingens[9].SpecialInfo))->Buffer, "%d", PPL);
- Skip = SKIP;
- ((struct StringInfo *) (dingens[10].SpecialInfo))->LongInt = Skip;
- sprintf (((struct StringInfo *) (dingens[10].SpecialInfo))->Buffer, "%d", SKIP);
- if (DoNumPrefs)
- {
- DoNum = TRUE;
- dingens[11].Flags |= SELECTED;
- }
- else
- {
- DoNum = FALSE;
- dingens[11].Flags &= ~SELECTED;
- }
- dingens[12].Flags |= SELECTED;
- return();
- }
-
-
- /************************************************************
- * *
- * Funktion: Drucker verlassen *
- * =========================== *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 25.7.91 *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- void ResetPrinter (void)
- {
- if (fputs ("\f\33c", PRT) == EOF) /* FF, RESET */
- Abbruch();
- SetPrefs (PrefsOrig, SIZE, TRUE);
- return ();
- }
-
-
- /************************************************************
- * *
- * Funktion: Drucker vorbereiten *
- * ============================= *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 25.7.91 Werte von Preferences *
- * H.Kindler 26.8.93 Fehler beim Drucken werden abgefangen *
- * *
- ************************************************************/
- void InitPrinter (void)
- {
- struct NewWindow nw; /* Fenster */
- struct IntuiMessage *msg; /* Nachrichten */
- short i; /* Zähler */
- char tmpnambuf [L_tmpnam]; /* Puffer PrtFile-tmpnam */
- char *prtname = "prt:Print"; /* Name für PrtFile */
- char prtfile [L_tmpnam + PRINT -2]; /* Fertiger Name */
- BOOL ende = FALSE; /* Keine weiteren msg */
- BOOL drucken = FALSE; /* To print or not to print, thats the Question */
- UBYTE titel[25]; /* Fenster-Titel */
-
- sprintf (titel, "KPrint V%d.%d by H.Kindler", Version, Revision);
- GetPrefs (PrefsOrig, (short) SIZE);
-
- strcpy (fname, FileName);
- strcpy (fnameundo, fname);
-
- nw.LeftEdge = 25; /* Window - Definitionen */
- nw.TopEdge = 12; /* (18 Werte!!) */
- nw.Width = 3 * RECHTS + 2 * HLUECKE +
- 2 * EINRUECK + Unterschrift.Width;
- nw.Height = 219;
- nw.DetailPen = 0;
- nw.BlockPen = 1;
- nw.IDCMPFlags = GADGETUP | CLOSEWINDOW | NEWPREFS | VANILLAKEY;
- nw.Flags = WINDOWDRAG | WINDOWDEPTH | WINDOWCLOSE |
- ACTIVATE | SMART_REFRESH;
- nw.FirstGadget = NULL;
- nw.CheckMark = NULL;
- nw.Title = titel;
- nw.Screen = NULL;
- nw.BitMap = NULL,
- nw.MinWidth = nw.Width;
- nw.MinHeight = nw.Height;
- nw.MaxWidth = nw.Width;
- nw.MaxHeight = nw.Height;
- nw.Type = WBENCHSCREEN;
-
- if (!(window = OpenWindow (&nw)))
- {
- puts ("Leider kein Fenster!");
- /* Close_All (); */
- exit (RETURN_ERROR);
- }
- freq.fr_Hail = "Bitte Datei auswählen! ";
- freq.fr_File = fr_fname; /* Struct für FileRequester */
- freq.fr_Dir = fr_dir;
- freq.fr_Window = window;
- freq.fr_FuncFlags = NULL;
- freq.fr_Flags2 = FR2F_LongPath;
- freq.fr_Function = NULL;
- freq.fr_LeftEdge = NULL;
- freq.fr_TopEdge = NULL;
-
- PrintIText (window->RPort, &texte2[0], 0, 0);
- DefaultPrefs (dingens);
- SetAPen (window->RPort, 0);
- DrawImage (window->RPort, &Unterschrift,
- window->Width - EINRUECK / 2 - Unterschrift.Width,
- window->Height - VLUECKE - Unterschrift.Height);
- AddGList (window, &dingens[0], -1, 18, NULL);
- RefreshGadgets (&dingens[0], window, NULL);
- do
- {
- WaitPort (window->UserPort); /* auf Msg warten */
- if (msg = (struct IntuiMessage *) GetMsg (window->UserPort))
- {
- switch (msg->Class)
- {
- case NEWPREFS:
- GetPrefs (PrefsOrig, (short) SIZE);
- break;
- case CLOSEWINDOW:
- ende = TRUE;
- break;
- case VANILLAKEY:
- switch (msg->Code)
- {
- case RETURN:
- case SPACE:
- ende = TRUE;
- drucken = TRUE;
- break;
- case ESC:
- case 'q':
- ende = TRUE;
- break;
- }
- break;
- case GADGETUP:
- switch (((struct Gadget *) (msg->IAddress))->GadgetID)
- {
- case 0: /* PICA */
- LLen = 80;
- PrefsBuffer->PrintPitch = PICA;
- RectFill (window->RPort, EINRUECK, TITELSKIP,
- EINRUECK + RECHTS2, TITELSKIP + UNTEN);
- dingens[0].Flags |= SELECTED;
- dingens[1].Flags &= ~SELECTED;
- dingens[2].Flags &= ~SELECTED;
- RefreshGList (&dingens[0], window, NULL, 3);
- break;
- case 1: /* ELITE */
- LLen = 96;
- PrefsBuffer->PrintPitch = ELITE;
- RectFill (window->RPort, EINRUECK, TITELSKIP,
- EINRUECK + RECHTS2, TITELSKIP + UNTEN);
- dingens[0].Flags &= ~SELECTED;
- dingens[1].Flags |= SELECTED;
- dingens[2].Flags &= ~SELECTED;
- RefreshGList (&dingens[0], window, NULL, 3);
- break;
- case 2: /* FINE */
- LLen = 136;
- PrefsBuffer->PrintPitch = FINE;
- RectFill (window->RPort, EINRUECK, TITELSKIP,
- EINRUECK + RECHTS2, TITELSKIP + UNTEN);
- dingens[0].Flags &= ~SELECTED;
- dingens[1].Flags &= ~SELECTED;
- dingens[2].Flags |= SELECTED;
- RefreshGList (&dingens[0], window, NULL, 3);
- break;
- case 3: /* NLQ */
- PrefsBuffer->PrintQuality = LETTER;
- RectFill (window->RPort,
- EINRUECK + HLUECKE + RECHTS,
- TITELSKIP + UNTEN + VLUECKE,
- EINRUECK + 3 * RECHTS + 2 * HLUECKE,
- TITELSKIP + 2 * UNTEN + VLUECKE);
- dingens[3].Flags |= SELECTED;
- dingens[4].Flags &= ~SELECTED;
- RefreshGList (&dingens[3], window, NULL, 2);
- break;
- case 4: /* Draft */
- PrefsBuffer->PrintQuality = DRAFT;
- RectFill (window->RPort,
- EINRUECK + HLUECKE + RECHTS,
- TITELSKIP + UNTEN + VLUECKE,
- EINRUECK + 3 * RECHTS + 2 * HLUECKE,
- TITELSKIP + 2 * UNTEN + VLUECKE);
- dingens[3].Flags &= ~SELECTED;
- dingens[4].Flags |= SELECTED;
- RefreshGList (&dingens[3], window, NULL, 2);
- break;
- case 5: /* 6 LPI */
- PrefsBuffer->PrintSpacing = SIX_LPI;
- LPI = 6;
- RectFill (window->RPort,
- EINRUECK + HLUECKE + RECHTS,
- TITELSKIP + 3 * (UNTEN + VLUECKE),
- EINRUECK + 3 * RECHTS + 2 * HLUECKE,
- TITELSKIP + 4 * UNTEN + 3 * VLUECKE);
- dingens[5].Flags |= SELECTED;
- dingens[6].Flags &= ~SELECTED;
- RefreshGList (&dingens[5], window, NULL, 2);
- break;
- case 6: /* 8 LPI */
- PrefsBuffer->PrintSpacing = EIGHT_LPI;
- LPI = 8;
- RectFill (window->RPort,
- EINRUECK + HLUECKE + RECHTS,
- TITELSKIP + 3 * (UNTEN + VLUECKE),
- EINRUECK + 3 * RECHTS + 2 * HLUECKE,
- TITELSKIP + 4 * UNTEN + 3 * VLUECKE);
- dingens[5].Flags &= ~SELECTED;
- dingens[6].Flags |= SELECTED;
- RefreshGList (&dingens[5], window, NULL, 2);
- break;
- case 7: /* Linker Rand */
- LM = strinfo[0].LongInt;
- if (LM > RM)
- {
- LM = RM;
- strinfo[0].LongInt = LM;
- sprintf (strinfo[0].Buffer, "%d", LM);
- RefreshGList (&dingens[7], window, NULL, 1);
- }
- PrefsBuffer->PrintLeftMargin = LM;
- break;
- case 8: /* Rechter Rand */
- RM = strinfo[1].LongInt;
- if (RM > LLen)
- {
- RM = LLen;
- strinfo[1].LongInt = RM;
- sprintf (strinfo[1].Buffer, "%d", RM);
- RefreshGList (&dingens[8], window, NULL, 1);
- }
- PrefsBuffer->PrintRightMargin = RM;
- break;
- case 9: /* Blattlänge */
- PPL = strinfo[2].LongInt;
- PrefsBuffer->PaperLength = PPL;
- break;
- case 10: /* freie Zeilen */
- Skip = strinfo[3].LongInt;
- if (Skip > PPL)
- {
- Skip = PPL;
- sprintf (strinfo[3].Buffer, "%d", PPL);
- RefreshGList (&dingens[10], window, NULL, 1);
- }
- break;
- case 11: /* ZeilenNummer */
- DoNum = (dingens[11].Flags & SELECTED) ? TRUE : FALSE;
- /* TRUE falls SELECTED, sonst FALSE (0) */
- break;
- case 12: /* Kopfzeile */
- DoKopf = (dingens[12].Flags & SELECTED) ? TRUE : FALSE;
- /* TRUE falls SELECTED, sonst FALSE (0) */
- break;
- case 13: /* Laden */
- if (ArpBase)
- if (FileRequest (&freq))
- {
- strcpy (strinfo[4].Buffer, freq.fr_Dir);
- TackOn (strinfo[4].Buffer, freq.fr_File);
- RefreshGList (&dingens[14], window, NULL, 1);
- }
- case 14: /* Dateiname */
- /* Es gibt nichts zu tun, da FileName nacher
- * eh auf strinfo[4].Buffer zeigt!
- */
- break;
- case 15: /* Voreinstellungen */
- RemoveGList (window, &dingens[0], -1);
- DefaultPrefs (dingens);
- RectFill (window->RPort, 2, 11,
- window->Width - EINRUECK -
- Unterschrift.Width,
- dingens[12].TopEdge + UNTEN + 1);
- AddGList (window, &dingens[0], -1, 18, NULL);
- RefreshGadgets (&dingens[0], window, NULL);
- PrintIText (window->RPort, &texte2[0], 0, 0);
- break;
- case 16: /* Drucken */
- ende = TRUE;
- drucken = TRUE;
- break;
- case 17: /* Abbruch */
- ende = TRUE;
- break;
- }
- break;
- }
- ReplyMsg ((struct Message *) msg);
- }
- } while (!ende);
- Forbid();
- do
- if (msg = (struct IntuiMessage *) GetMsg (window->UserPort))
- ReplyMsg ((struct Message *) msg);
- while (msg);
- ModifyIDCMP (window, 0);
- Permit();
- RemoveGList (window, &dingens[0], -1);
- CloseWindow (window);
- if (!drucken)
- {
- Close_All ();
- exit (RETURN_OK);
- }
- FileName = strinfo[4].Buffer;
- SetPrefs (PrefsBuffer, SIZE, TRUE);
- if (DoNum) NumLen = NUMLEN;
- LPP = (PPL - Skip) * LPI / 6; /* so viel bedrucken */
- LLen = RM - LM + 1 - NumLen; /* Platz zw. Rändern */
- CPL = LLen - NumLen; /* weniger Nummernlänge */
- strcpy (prtfile, prtname); /* DruckName zusammenstellen */
- tmpnam (tmpnambuf);
- strcpy (prtfile + PRINT, tmpnambuf + 2);
- if ((PRT = fopen (prtfile, "w")) == NULL)
- {
- puts ("Kann Drucker nicht ansprechen!");
- Close_All ();
- exit (RETURN_ERROR);
- }
- if (fputs ("\33#1", PRT) == EOF) /* Drucker vom System initialisieren */
- Abbruch();
- if (fprintf(PRT, "\33[%dt", PPL) < 0) /* Seitenlänge (Sys machts net) */
- Abbruch();
- return;
- }
-
- /******************************************
- * *
- * Funktion: Abbruch bei Fehler *
- * ============================ *
- * *
- * Autor: Datum: Kommentar: *
- * ------ ------ ---------- *
- * H.Kindler 26.8.93 *
- * *
- ******************************************/
- void Abbruch(void)
- {
- Close_All();
- exit (RETURN_ERROR);
- }
-